package com.nine.face.sort;

import java.util.Arrays;

/**
 * 插入排序
 */
public class InsertSort {

    public static void main(String[] args) {
        int[] arr = {9, 3, 7, 2, 5, 8, 1, 4};
        insertSort(arr);
    }

    // 插入排序
    private static void insertSort(int[] a) {
        // 定义两个序列，一个为排好序的，一个为待排序的
        // 初始默认，第一个元素为排好序的序列,从第二个元素开始为待排序序列
        // i 代表待插入元素的索引
        for (int i = 1; i < a.length; i++) {
            // 代表待插入的元素值
            int t = a[i];
            // 代表已经排好序区域的元素索引
            int j = i - 1;
            while (j >= 0) {
                if (t < a[j]) {
                    // 待插入值小于已经排好序区域的元素值，则将该区域的值向后移动
                    a[j + 1] = a[j];
                }
                else {
                    break;
                }
                j--;
            }
            a[j + 1] = t; // 将待插入的值放到合适的位置[j+1]
            System.out.println("第" + i + "次排序后：" + Arrays.toString(a));
        }

    }

}
